package com.cloud.note.service;

import com.cloud.note.dto.note.BatchOperationRequest;
import com.cloud.note.dto.note.CreateNoteRequest;
import com.cloud.note.dto.note.NoteResponse;
import com.cloud.note.dto.note.UpdateNoteRequest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

public interface NoteService {

    Page<NoteResponse> getAllNotes(String userId, Pageable pageable, String filter, String tagId, String keyword);

    NoteResponse getNoteById(String userId, String noteId);

    NoteResponse createNote(String userId, CreateNoteRequest createNoteRequest);

    NoteResponse updateNote(String userId, String noteId, UpdateNoteRequest updateNoteRequest);

    void moveToTrash(String userId, String noteId);

    void restoreFromTrash(String userId, String noteId);

    void deleteNote(String userId, String noteId);

    void batchOperation(String userId, BatchOperationRequest batchOperationRequest);
}